Package ru.dubov.anysegmentsintersect.test

Source Code of ru.dubov.anysegmentsintersect.test.SegmentsIntersectTest

package ru.dubov.anysegmentsintersect.test;

import ru.dubov.anysegmentsintersect.SegmentsIntersect;
import java.util.ArrayList;
import java.util.Random;
import junit.framework.TestCase;
import ru.dubov.anysegmentsintersect.SegmentsIntersect;
import ru.dubov.primitives.Point;
import ru.dubov.primitives.Segment;

public class SegmentsIntersectTest extends TestCase {
   
    public void testAnySegmentsIntersect_Prepared() {
       
        ArrayList<Segment> segments;
       
        // Test case 1
       
        segments = new ArrayList<Segment>();
       
        segments.add(new Segment(new Point(0, 0), new Point(1, 0)));
        segments.add(new Segment(new Point(2, 0), new Point(3, 0)));
        segments.add(new Segment(new Point(4, 0), new Point(5, 0)));
        segments.add(new Segment(new Point(4.3, 1), new Point(4.7, -1)));
        segments.add(new Segment(new Point(6, 0), new Point(7, 0)));
       
        assertTrue(SegmentsIntersect.any(segments));
       
        // Test case 2
       
        segments = new ArrayList<Segment>();
       
        segments.add(new Segment(new Point(0, 0), new Point(1, 0)));
        segments.add(new Segment(new Point(2, 0), new Point(3, 0)));
        segments.add(new Segment(new Point(4, 0), new Point(5, 0)));
       
        assertTrue(! SegmentsIntersect.any(segments));
    }
   
    public void testAnySegmentsIntersect_Boundary() {
       
        ArrayList<Segment> segments;
       
        // Test case 1
       
        segments = new ArrayList<Segment>();
       
        segments.add(new Segment(new Point(0, 0), new Point(2, 1)));
        segments.add(new Segment(new Point(2, 1), new Point(3, 0)));
        segments.add(new Segment(new Point(4, 0), new Point(5, 0)));
       
        assertTrue(SegmentsIntersect.any(segments));
       
        // Test case 2
       
        segments = new ArrayList<Segment>();
       
        segments.add(new Segment(new Point(0, 0), new Point(2, 1)));
        segments.add(new Segment(new Point(2, 2), new Point(3, 0)));
        segments.add(new Segment(new Point(2, 2), new Point(5, 0)));
       
        assertTrue(SegmentsIntersect.any(segments));
    }

    public void testAnySegmentsIntersect_Randomized() {
       
        Random rand = new Random();
       
        for (int repeat = 0; repeat < 1000; repeat++) {
            for (int i = 2; i <= 20; i++) {
                ArrayList<Segment> segments = new ArrayList<Segment>();

                for(int j = 0; j < i; j++) {
                    segments.add(new Segment(new Point(rand.nextDouble()*100, rand.nextDouble()*100),
                                             new Point(rand.nextDouble()*100, rand.nextDouble()*100)));
                }

                assertTrue(SegmentsIntersect.any(segments) ==
                            SegmentsIntersect.any_Naive(segments));
            }
        }
       
    }
}
TOP

Related Classes of ru.dubov.anysegmentsintersect.test.SegmentsIntersectTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.